﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tibet.Datos;
using Tibet.Datos.FabricaDatos;
using Tibet.Datos.Interfaces;
using Tibet.Entidades;

namespace Tibet.Logica
{
    public class ReporteDesarrolladores : Reporte
    {
        private int TotalDesarrolladores;
        private int CantProyectos;
        private List<Tibet.Entidades.Proyecto> ListaProyecto;

        /// <summary>
        /// Para pruebas unitarias
        /// </summary>
        public List<Tibet.Entidades.Proyecto> ListaProyecto1
        {
            get { return ListaProyecto; }
        }

        private IDaoAccesoReporte miBd;

        public ReporteDesarrolladores(String Nombre)
        {
            this.Nombre = Nombre;
            CargarDatos();
        }

        override public String Graficar()
        {
            List<Entidades.Usuario> lista = new List<Entidades.Usuario>();
            String respuesta = "";
            foreach(Tibet.Entidades.Proyecto a in ListaProyecto){
                if (a.Id != 0)
                {
                    respuesta = respuesta + "<h3>" + a.Nombre + "</h3><ul>";
                    lista = miBd.ConsultarDesarrolladorProyecto(a.Id);
                    try
                    {
                        foreach (Tibet.Entidades.Usuario b in lista)
                        {
                            this.TotalDesarrolladores++;
                            respuesta = respuesta + "<li>" + b.Nombre + "</li>";
                        }
                    }
                    catch (Exception e) {
                        return "Ocurrio un error: " + e.Message;
                    };
                    respuesta = respuesta + "</ul>";
                }
            }
           
            return respuesta;
        }

        override public void CargarDatos()
        {

            FabricaDao FNuevo = FabricaDao.ObtenerFabricaDeDao(1);
            this.miBd = FNuevo.ObtenerDaoSqlServerReporte();
            this.ListaProyecto = new List<Tibet.Entidades.Proyecto>();
            this.ListaProyecto = miBd.ConsultarProyectos();
            this.CantProyectos = ListaProyecto.Count;

        }

        override public String MostrarDatos()
        {
            try
            {
                return "<p><h3> Totalización </h3></p>" +
                       "<p><b>Total Proyectos:</b>" + this.CantProyectos + "<br>" +
                       "<p><b>Prom. Desarrolladores por Proyecto:</b>" + this.TotalDesarrolladores / this.CantProyectos + "<br>" +
                       "</p>";
            }
            catch (Exception e)
            {
                return "Ocurrio un error: "+e.Message;
            }

        }
    }
}
